package 剑指Offer;

public class Offer44_数字序列中某一位的数字 {
    public static void main(String[] args) {
        System.out.println(new Offer44_数字序列中某一位的数字().findNthDigit(11));
    }

    //找规律题
    public int findNthDigit(int n) {
        if (n <= 9) {
            return n;
        }
        int digit = 1; //数字位数(例如三位数digit=3)
        long start = 1; //digit位数的第一个数字（0是特殊数字）
        long count = 10; //所有digit位数所占的  数位数量
        while (n > count) {//1.确定n所在的数字的位数digit
            n -= count;
            digit += 1;
            start *= 10;
            count = digit * start * 9;
        }
        //2. 确定n所在的数字num
        //此时n的值是相对于start的位置
        long num = start + n / digit;
        //3. 确定n是num的第几位
        //这里引入s和c方便理解
        String s = Long.toString(num);
        char c = s.charAt(n % digit);
        return c - '0';
    }
}
